/*
 * Created by: Erik Peterson
 * Created: Monday, November 12, 2007
 */

namespace SitecoreFacade.SitecoreItems
{
    public interface ISitecoreField
    {
        /// <summary>
        /// Get string value of field.  For rich text fields, return the inner value (the HTML), otherwise
        /// just return the value.
        /// </summary>
        string Value { get; }

        /// <summary>
        /// Check to see if field is of specified type 
        /// </summary>
        bool IsOfType(string sitecoreFieldType);

        /// <summary>
        /// Returns image field attributes for field.  If not an image field, empty strings are
        /// returned for the attributes.
        /// </summary>
        IImageFieldAttributes ImageFieldAttributes { get; }

        /// <summary>
        /// Returns multilist field attributes for field.  If not a multilist field, an empty list is
        /// returned for the attributes.
        /// </summary>
        IMultilistFieldAttributes MultilistFieldAttributes { get; }

        /// <summary>
        /// Returns the lookup field attributes for field.  If not a lookupfield, null is returned.
        /// </summary>
        ILookupFieldAttributes LookupFieldAttributes { get; }

        /// <summary>
        /// Returns the file field attributes for field.  If not a file field, null is returned.
        /// </summary>
        IFileFieldAttributes FileFieldAttributes { get; }

        /// <summary>
        /// Returns the custom field attributes for field.  If not a file field, null is returned.
        /// </summary>
        ICustomFieldAttributes CustomFieldAttributes { get; }

        /// <summary>
        /// Returns the checkbox field attributes for the field.
        /// </summary>
        ICheckboxFieldAttributes CheckboxFieldAttributes { get; }
    }
}